package T9;
//Lmabda表达式调用带参有返回值类型的方法：
//在下面的程序代码的注释位置按要求添加代码，
//分别以匿名内部类方式、Lambda表达式方式
//以及Lambda表达式省略方式等3种方式输出如图所示的结果：

//定义有参、有返回值的函数式接口
@FunctionalInterface
interface Calculate {
    int sum(int a, int b);
}

class CalculateDemo {
    // 创建一个求和的方法，并传入两个int类型以及接口Calculate类型的参数
    public void add(int num1, int num2, Calculate calculate) {
        int result = calculate.sum(num1, num2);
        System.out.println(num1 + "+" + num2 + "的和为：" + result);
    }
}

public class LambdaDemo2 {

    public static void main(String[] args) {
        CalculateDemo cd = new CalculateDemo();

        // 匿名内部类方式
        cd.add(10, 20, new Calculate() {
            @Override
            public int sum(int a, int b) {
                return a+b;
            }
        });

        // Lambda表达式方式:
        Calculate cd2 = (int a,int b)->{return a+b;};
        cd.add(10, 20,cd2);
        new CalculateDemo().add(10, 20, cd2);

    }

}
